<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        JS中数据类型 分为基本数据类型和引用数据类型
        在引用数据类型发生改变时通常是浅拷贝（不考虑特殊改变形式下）

     -->
</body>
<script>
    let a={
        a:1,
        b:{
            c:2,
            d:{
                a:[
                    1,2,3,4,5,
                    {
                        k:1,
                        c:0,
                        e:[
                            2,3,4,5,6,7,
                            {
                                a:1,
                                b:2,
                                r:1
                            }
                        ]
                    }
                ]
            }
        }
    }
    // var b=JSON.parse(JSON.stringify(a))
    // b.b.d.a[5].c=1;
    // logger.warn(a);
    let xuexiwei=[];
// xuexiwei=[1]
function tuzi(index){
    if(index<2){
        xuexiwei[index]=1
    }else{
        xuexiwei[index]=xuexiwei[index-1]+xuexiwei[index-2]
    }
    if(index<49){
        tuzi(index+1)
    }
    // [1,1]

}
tuzi(0)
console.log(xexiwei);
// 深拷之递归拷贝
var b=deepClone(a);
b.b.c=1;
console.log(b);
console.log(a);
function deepClone(obj){
    // Array.isArray()
    // 判断是不是数组
    var objClone=Array.isArray(abj)?[]:[];
    //判断当前obj是不是存在的null undefind
    if(obj&&type(obj)=="object"){
        // 循环当前对象
        for(let key in obj){
            // 判断当前对象有没有下标,如果没有空对象数组
            // 判断当前对象有没有下标hasOwnProperty()
            if(obj.hasOwnProperty(key)){
                // 如果当前obj由下表且obj[key]仍是个对象，那就继续把obj[key]
                // 去重新进deepClone方法
                if(obj[key]&&type(obj[key])=="object"){
                    objClone[key]=deepClone(onj[key])
                }else{
                    objClone[key]=obj[key]
                }
            }
        }
        return objClone
    }
}
</script>
</html>